//: Filename: test.h
//: the header of test.cpp

#ifndef TEST_H
#define TEST_H
#include <iostream>
#include <sstream>
#include <iomanip>
#include <cstring>
#include <string>
#include <ctime>
#include <vector>
#include <deque>
#include <list>
#include <iterator>

#define deqb std::deque<double>
#define deqb2 std::deque<deqb>
#define deqb3 std::deque<deqb2>

#define vecb std::vector<double>
#define vecb2 std::vector<vecb>
#define vecb3 std::vector<vecb2>


class People
{
    protected:
        std::size_t _age;
        std::string _name;
        double* scores;
    public:
        People(std::size_t myAge, std::string myName) 
            : _age(myAge), _name(myName)
        {
            scores = NULL;
        };

        virtual ~People() {};
        virtual std::string get_name() = 0;
        virtual std::size_t get_age() = 0;
};

class Woman : public People
{
    public:
        Woman(std::size_t myAge, std::string myName) : People(myAge, myName) {};
        ~Woman() {};
        std::string get_name();
        std::size_t get_age();
        void changeName();

};

class Man : public People
{
    public:
        Man(std::size_t myAge, std::string myName) : People(myAge, myName) {};
        ~Man() {};
        std::string get_name();
        std::size_t get_age();
};


#endif //: TEST_H
///:~
